xen: arm: clarify cacheability requirements of hypercall arguments.
authorIan Campbell <ian.campbell@citrix.com>
Wed, 18 Dec 2013 11:54:46 +0000 (11:54 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 18 Dec 2013 13:05:10 +0000 (13:05 +0000)
Accepting hypercall arguments which are either consistently in cached or
uncached is tricky and/or potentially slow, requiring a guest mapping lookup
to determine whether/when to do a cache clean or invalidate.

There are very few reasons, and no current use cases in practice, for a guest
to use uncached memory for their hypercall arguments. Therefore mandate that
all hypercall arguments must be mapped inner-cacheable.

Do not place any restriction on the outer-cacheability or on the cache
fill/flush strategy used.

If use cases arise then we can consider specific exemptions to this rule.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
xen/include/public/arch-arm.h

index 475cb4aa72eef75c41b83d7bca28f18c8b567fcb..ef6217d73e7368e34d6cc16c2c4318f8ac2fe8cb 100644 (file)
  * (AAPCS64). Where there is a conflict the 64-bit standard should be
  * used regardless of guest type. Structures which are passed as
  * hypercall arguments are always little endian.
+ *
+ * All hypercall arguments passed via a pointer to guest memory must
+ * reside in memory which is mapped as Normal Inner-cacheable. Any
+ * Inner cache allocation strategy (Write-Back, Write-Through etc) is
+ * acceptable. There is no restriction on the Outer-cacheability.
  */
 
 /*